<?php
class ClienteController extends Zend_Controller_Action
{
    public function init()
    {
    	
    }

    public function indexAction()
    {
    	$cliente = new Cliente();
    	$clientes = $cliente->fetchAll(); 

    	//criando a paginaçao
		$paginator = Zend_Paginator::factory($clientes);
		//pagina atual. Se nao vier nenhuma pagina, mostra a primeira
		$currentPage = $this->_getParam('page', 1);
		$paginator
		->setCurrentPageNumber($currentPage)
		->setItemCountPerPage(10);
		
		//manda para a view
		$this->view->paginator = $paginator;
    }
	
    public function showAction()
    {
    	try 
    	{
    		$id_cliente = $this->_request->get('id_cliente');
    		$cliente = new Cliente();
    		
    		$objFormDominio = new Foxsis_Form_Dominio();
    		$objFormDominio->id_cliente->setValue($this->_request->get('id_cliente'));
    		
    		if($this->_request->get('id_dominio'))
    		{
    			$id_dominio = $this->_request->get('id_dominio');
    			$dominio = new Dominio();
    			$data = $dominio->find($id_dominio)->current()->toArray();
    			
    			$objFormDominio->populate($data);
    		}
    		
    		$this->view->objFormDominio = $objFormDominio;
    		$clienteData = $cliente->find($id_cliente)->current();
    		$this->view->cliente =  $clienteData;
			
    		// form de pagamento
    		$formPagamento = new Foxsis_Form_Pagamento();
    		
    		
    		// selecionando os pagamentos
    		$this->view->formPagamento = $formPagamento;
    		
	    	foreach($clienteData->findDependentRowset('Dominio') as $dominio)
	    	{
	    		$formPagamento->id_dominio->addMultiOption($dominio->id_dominio, $dominio->url);
	    	}
    		
	    	$dominio = new Dominio();
    		$this->view->pagamentos = $dominio->getPagamentos($id_cliente);
    	}	
    	catch (Exception $e)
    	{
    		$this->_helper->FlashMessenger('Erro ao visualizar registro! ' . $e->getMessage());
	        return $this->_helper->redirector->goToRoute( array('controller' => 'cliente'), null, true);	
    	}
    }
    
    public function createAction()
    {
        $objFormCliente = new Foxsis_Form_Cliente();
        $this->view->objFormCliente = $objFormCliente;
    }
    
    public function editAction()
    {
    	try 
    	{
    		$id_cliente = $this->_request->get('id_cliente');
    		$cliente = new Cliente();
    		$data 	 =  $cliente->find($id_cliente)->current()->toArray();
    		
    		$form = new Foxsis_Form_Cliente();
    		$form->populate($data);
    		
    		// pego os pagamentos
    		$paginaRowSet = $cliente->getReference('Plano');
    		print_r($paginaRowSet);
    		
    		$this->view->objFormCliente = $form;
	        $this->renderScript("cliente/create.phtml");
    	} 
    	catch (Exception $e)
    	{
    		$this->_helper->FlashMessenger('Erro ao editar registro! ' . $e->getMessage());
	        return $this->_helper->redirector->goToRoute( array('controller' => 'cliente'), null, true);			
    	}
    }

    public function saveAction()
    {
    	try
    	{
	    	if($this->_request->isPost())
		    {
		    	$Form = new Foxsis_Form_Cliente();
		        $data = $this->_request->getPost();

		        if($Form->isValid($data)) 
		        {
		        	$cliente = new Cliente();
		        	
		        	if(!empty($data['id_cliente']))
		        	{
		        		$cliente->find($data['id_cliente'])->current();
		        		$cliente->update($data, "id_cliente = {$data['id_cliente']}");		
		        	}
		        	else
		        	{
		        		$data['id_usuario'] = Zend_Auth::getInstance()->getIdentity()->id_usuario;
		        		unset($data['id_cliente']);
		        		$cliente->insert($data);	
		        	}
		            
		            $this->_helper->FlashMessenger('Dados salvos com sucesso!');
		            return $this->_helper->redirector->goToRoute( array('controller' => 'cliente'), null, true);   
		        }
		        else 
		        {
		            $this->_helper->FlashMessenger('Erro ao cadastrar Cliente!');
		            $Form->populate($data);
		        } 
			} 
    	}
    	catch (Exception $e)
    	{ 
    		$this->_helper->FlashMessenger('Erro ao cadastrar Cliente! ' . $e->getMessage());
	        return $this->_helper->redirector->goToRoute( array('controller' => 'cliente'), null, true);
	    }
    }
    
    public function testeAction()
    {
    	$cliente = new Cliente();
    	$clientes = $cliente->fetchAll(
			$cliente->select()
			->order('nome')
		);
		foreach($clientes as $cliente)
		{
			echo "Cliente: " . $cliente->nome . "<br />";
			$dominios = $cliente->findDependentRowset('Dominio');
			foreach($dominios as $dominio)
			{ 
				echo "------Plano: " . $dominio->findParentRow('Plano')->nome . "<br />";
				echo "------Valor Plano: " . $dominio->findParentRow('Plano')->valor . "<br />";
				echo "------Usuario: " . $dominio->findParentRow('Usuario')->nome . "<br />";
			}
		}
		
		$usuario = new Usuario();
		$usuario = $usuario->find(1)->current();
		
		$planos;
    }
}